Test Prototype Monitor Ready

>c
CP/M-80 VERSION 2.2C FOR THE TEST PROTOTYPE COMPUTER

A>c:lodcbios

CP/M-80 VERSION 2.2C FOR THE N8VEM - W/ATAPI

A>f:
F>dir
F: PIP      COM : ASM      COM : STAT     COM : DDT      COM
F: DUMP     ASM : DUMP     COM : SUBMIT   COM : XSUB     COM
F: ED       COM : LOAD     COM : DEBLOCK  ASM : RTC      COM
F: VDE263   COM : VINST263 COM : BOB      TXT : BBCBASIC COM
F>stat a:

Bytes Remaining On A: 698k

F>dir a:
NO FILE
F>pip a:=f:*.*

COPYING -
PIP.COM
ASM.COM
STAT.COM
DDT.COM
DUMP.ASM
DUMP.COM
SUBMIT.COM
XSUB.COM
ED.COM
LOAD.COM
DEBLOCK.ASM
RTC.COM
VDE263.COM
VINST263.COM
BOB.TXT
BBCBASIC.COM

CP/M-80 VERSION 2.2C FOR THE N8VEM - W/ATAPI

Test Prototype Monitor Ready

>c
CP/M-80 VERSION 2.2C FOR THE TEST PROTOTYPE COMPUTER

A>c:lodcbios

CP/M-80 VERSION 2.2C FOR THE N8VEM - W/ATAPI

A>f:
F>dir
F: PIP      COM : ASM      COM : STAT     COM : DDT      COM
F: DUMP     ASM : DUMP     COM : SUBMIT   COM : XSUB     COM
F: ED       COM : LOAD     COM : DEBLOCK  ASM : RTC      COM
F: VDE263   COM : VINST263 COM : BOB      TXT : BBCBASIC COM
F>dir a:
A: PIP      COM : ASM      COM : STAT     COM : DDT      COM
A: DUMP     ASM : DUMP     COM : SUBMIT   COM : XSUB     COM
A: ED       COM : LOAD     COM : DEBLOCK  ASM : RTC      COM
A: VDE263   COM : VINST263 COM : BOB      TXT : BBCBASIC COM
F>stat f:

Bytes Remaining On F: 914k

F>stat f:*.*

 Recs  Bytes  Ext Acc
   64     8k    1 R/W F:ASM.COM
  116    16k    1 R/W F:BBCBASIC.COM
    1     2k    1 R/W F:BOB.TXT
   38     6k    1 R/W F:DDT.COM
   80    10k    1 R/W F:DEBLOCK.ASM
   34     6k    1 R/W F:DUMP.ASM
    4     2k    1 R/W F:DUMP.COM
   52     8k    1 R/W F:ED.COM
   14     2k    1 R/W F:LOAD.COM
   58     8k    1 R/W F:PIP.COM
   16     2k    1 R/W F:RTC.COM
   42     6k    1 R/W F:STAT.COM
   10     2k    1 R/W F:SUBMIT.COM
  104    14k    1 R/W F:VDE263.COM
   76    10k    1 R/W F:VINST263.COM
    6     2k    1 R/W F:XSUB.COM
Bytes Remaining On F: 914k

F>stat a:

Bytes Remaining On A: 594k

F>stat a:*.*

 Recs  Bytes  Ext Acc
   64     8k    1 R/W A:ASM.COM
  116    16k    1 R/W A:BBCBASIC.COM
    1     2k    1 R/W A:BOB.TXT
   38     6k    1 R/W A:DDT.COM
   80    10k    1 R/W A:DEBLOCK.ASM
   34     6k    1 R/W A:DUMP.ASM
    4     2k    1 R/W A:DUMP.COM
   52     8k    1 R/W A:ED.COM
   14     2k    1 R/W A:LOAD.COM
   58     8k    1 R/W A:PIP.COM
   16     2k    1 R/W A:RTC.COM
   42     6k    1 R/W A:STAT.COM
   10     2k    1 R/W A:SUBMIT.COM
  104    14k    1 R/W A:VDE263.COM
   76    10k    1 R/W A:VINST263.COM
    6     2k    1 R/W A:XSUB.COM
Bytes Remaining On A: 594k

F>a:dump a:dump.com

0000 21 00 00 39 22 15 02 31 57 02 CD C1 01 FE FF C2
0010 1B 01 11 F3 01 CD 9C 01 C3 51 01 3E 80 32 13 02
0020 21 00 00 E5 CD A2 01 E1 DA 51 01 47 7D E6 0F C2
0030 44 01 CD 72 01 CD 59 01 0F DA 51 01 7C CD 8F 01
0040 7D CD 8F 01 23 3E 20 CD 65 01 78 CD 8F 01 C3 23
0050 01 CD 72 01 2A 15 02 F9 C9 E5 D5 C5 0E 0B CD 05
0060 00 C1 D1 E1 C9 E5 D5 C5 0E 02 5F CD 05 00 C1 D1
0070 E1 C9 3E 0D CD 65 01 3E 0A CD 65 01 C9 E6 0F FE
0080 0A D2 89 01 C6 30 C3 8B 01 C6 37 CD 65 01 C9 F5
0090 0F 0F 0F 0F CD 7D 01 F1 CD 7D 01 C9 0E 09 CD 05
00A0 00 C9 3A 13 02 FE 80 C2 B3 01 CD CE 01 B7 CA B3
00B0 01 37 C9 5F 16 00 3C 32 13 02 21 80 00 19 7E B7
00C0 C9 AF 32 7C 00 11 5C 00 0E 0F CD 05 00 C9 E5 D5
00D0 C5 11 5C 00 0E 14 CD 05 00 C1 D1 E1 C9 46 49 4C
00E0 45 20 44 55 4D 50 20 56 45 52 53 49 4F 4E 20 31
00F0 2E 34 24 0D 0A 4E 4F 20 49 4E 50 55 54 20 46 49
0100 4C 45 20 50 52 45 53 45 4E 54 20 4F 4E 20 44 49
0110 53 4B 24 EA 21 F5 C5 D5 E5 59 0E 02 CD 06 10 E1
0120 D1 C1 F1 C9 FE 20 C8 FE 09 C8 FE 2C C8 FE 0D C8
0130 FE 7F CA 3C 05 C9 0E 0D CD 15 00 0E 0A CD 15 00
0140 C9 CD 09 07 FE 0D CA 2A 05 CD 24 00 CA 41 00 0E
0150 04 21 8B 06 36 20 23 0D C2 54 00 0E 05 21 8B 06
0160 77 CD 09 07 CD 24 00 CA 72 00 23 0D CA 2A 05 C3
0170 60 00 3A 8B 06 FE 20 C9 D6 30 FE 0A D8 C6 F9 FE
0180 10 D8 C3 2A 05 CD 41 00 CA 2A 05 11 00 00 01 00
0190 00 21 8B 06 09 7E FE 20 CA B0 00 CD 78 00 6B 62
01A0 29 29 29 29 5F 16 00 19 EB 03 79 FE 04 C2 91 00
01B0 42 4B 7B 05 04 C9 CD 85 00 C2 2A 05 C9 21 05 00
01C0 36 C3 36 C3 21 00 00 22 06 00 C9 17 17 17 E6 38
01D0 C9 17 17 17 17 E6 30 C9 EB 2A 8B 06 EB 7B BE C2
01E0 E7 00 23 7A BE C8 2B 2B 2B 0D C2 DD 00 0D C9 06
01F0 04 D5 11 8B 06 1A BE C2 00 44 55 4D 50 20 20 20

F>type a:bob.txt
HI MY NAME IS BOB.  I AM A TEXT FILE.


F>dir a:
A: PIP      COM : ASM      COM : STAT     COM : DDT      COM
A: DUMP     ASM : DUMP     COM : SUBMIT   COM : XSUB     COM
A: ED       COM : LOAD     COM : DEBLOCK  ASM : RTC      COM
A: VDE263   COM : VINST263 COM : BOB      TXT : BBCBASIC COM
F>type a:dump.asm
;       FILE DUMP PROGRAM, READS AN INPUT FILE AND PRINTS IN HEX
;
;       COPYRIGHT (C) 1975, 1976, 1977, 1978
;       DIGITAL RESEARCH
;       BOX 579, PACIFIC GROVE
;       CALIFORNIA, 93950
;
        ORG     100H
BDOS    EQU     0005H   ;DOS ENTRY POINT
CONS    EQU     1       ;READ CONSOLE
TYPEF   EQU     2       ;TYPE FUNCTION
PRINTF  EQU     9       ;BUFFER PRINT ENTRY
BRKF    EQU     11      ;BREAK KEY FUNCTION (TRUE IF CHAR READY)
OPENF   EQU     15      ;FILE OPEN
READF   EQU     20      ;READ FUNCTION
;
FCB     EQU     5CH     ;FILE CONTROL BLOCK ADDRESS
BUFF    EQU     80H     ;INPUT DISK BUFFER ADDRESS
;
;       NON GRADIC CHARACTERS
CR      EQU     0DH     ;CARRIAGE RETURN
LF      EQU     0AH     ;LINE FEED
;
;       FILE CONTROL BLOCK DEFINITIONS
FCBDN   EQU     FCB+0   ;DISK NAME
FCBFN   EQU     FCB+1   ;FILE NAME
FCBFT   EQU     FCB+9   ;DISK FILE TYPE (3 CHARACTERS)
FCBRL   EQU     FCB+12  ;FILE'S CURRENT REEL NUMBER
FCBRC   EQU     FCB+15  ;FILE'S RECORD COUNT (0 TO 128)
FCBCR   EQU     FCB+32  ;CURRENT (NEXT) RECORD NUMBER (0 TO 127)
FCBLN   EQU     FCB+33  ;FCB LENGTH
;
;       SET UP STACK
        LXI     H,0
        DAD     SP
;       ENTRY STACK POINTER IN HL FROM THE CCP
        SHLD    OLDSP
;       SET SP TO LOCAL STACDUMEA (RESTORED AT FINIS)
        LXI     SP,STKTOP
;       READ AND PRINT SUCCESSIVE BUFFERS
        CALL    SETUP   ;SET UP INPUT FILE
        CPI     255     ;255 IF FILE NOT PRESENT
        JNZ     OPENOK  ;SKIP IF OPEN IS OK
;
;       FILE NOT THERE, GIVE ERROR MESSAGE AND RETURN
        LXI     D,OPNMSG
        CALL    ERR
        JMP     FINIS   ;TO RETURN
;
OPENOK: ;OPEN OPERATION OK, SET BUFFER INDEX TO END
        MVI     A,80H
        STA     IBP     ;SET BUFFER POINTER TO 80H
;       HL CONTAINS NEXT ADDRESS TO PRINT
        LXI     H,0     ;START WITH 0000
;
GLOOP:
        PUSH    H       ;SAVE LINE POSITION
        CALL    GNB
        POP     H       ;DUMP  LINE POSITION
        JC      FINIS   ;CARRY SET BY GNB IF END FILE
        MOV     B,A
;       PRINT HEX VALUES
;       CHECK FOR LINE FOLD
        MOV     A,L
        ANI     0FH     ;CHECK LOW 4 BITS
        JNZ     NONUM
;       PRINT LINE NUMBER
        CALL    CRLF
;
;       CHECK FOR BREAK KEY
        CALL    BREAK
;       ACCUM LSB = 1 IF CHARACTER READY
        RRC             ;INTO CARRY
        JC      FINIS   ;DON'T PRINT ANY MORE
;
        MOV     A,H
        CALL    PHEX
        MOV     A,L
        CALL    PHEX
NONUM:
        INX     H       ;TO NEXT LINE NUMBER
        MVI     A,' '
        CALL    PCHAR
        MOV     A,B
        CALL    PHEX
        JMP     GLOOP
;
FINIS:
;       END OF DUMP, RETURN TO CCP
DUMP   THAT A JMP TO 0000H REBOOTS)
        CALL    CRLF
        LHLD    OLDSP
        SPHL
;       STACK POINTER CONTAINS CCP'S STACK LOCATION
        RET             ;TO THE CCP
;
;
;       SUBROUTINES
;
BREAK:  ;CHECK BREAK KEY (ACTUALLY ANY KEY WILL DO)
        PUSH H! PUSH D! PUSH B; ENVIRONMENT SAVED
        MVI     C,BRKF
        CALL    BDOS
        POP B! POP D! POP H; ENVIRONMENT RESTORED
        RET
;
PCHAR:  ;PRINT A CHARACTER
        PUSH H! PUSH D! PUSH B; SAVED
        MVI     C,TYPEF
        MOV     E,A
        CALL    BDOS
        POP B! POP D! POP H; RESTORED
        RET
;
CRLF:
        MVI     A,CR
        CALL    PCHAR
        MVI     A,LFDUMP    AHAR
        RET
;
;
PNIB:   ;PRINT NIBBLE IN REG A
        ANI     0FH     ;LOW 4 BITS
        CPI     10
        JNC     P10
;       LESS THAN OR EQUAL TO 9
        ADI     '0'
        JMP     PRN
;
;       GREATER OR EQUAL TO 10
P10:    ADI     'A' - 10
PRN:    CALL    PCHAR
        RET
;
PHEX:   ;PRINT HEX CHAR IN REG A
        PUSH    PSW
        RRC
        RRC
        RRC
        RRC
        CALL    PNIB    ;PRINT NIBBLE
        POP     PSW
        CALL    PNIB
        RET
;
ERR:    ;PRINT ERROR MESSAGE
;       D,E ADDRESSES MESSAGE ENDING WITH "$"
        MVI     C,PRINTF        ;PRINT BUFFER FUNCTION
        CALL    BDOS
        RET
;
;
GNB:    ;GET NEXT BYTE
        LDA     IBP
        CPI     8DUMP    ASM
                            ;       READ ANOTHER BUFFER
;
;
        CALL    DISKR
        ORA     A       ;ZERO VALUE IF READ OK
        JZ      G0      ;FOR ANOTHER BYTE
;       END OF DATA, RETURN WITH CARRY SET FOR EOF
        STC
        RET
;
G0:     ;READ THE BYTE AT BUFF+REG A
        MOV     E,A     ;LS BYTE OF BUFFER INDEX
        MVI     D,0     ;DOUBLE PRECISION INDEX TO DE
        INR     A       ;INDEX=INDEX+1
        STA     IBP     ;BACK TO MEMORY
;       POINTER IS INCREMENTED
;       SAVE THE CURRENT FILE ADDRESS
        LXI     H,BUFF
        DAD     D
;       ABSOLUTE CHARACTER ADDRESS IS IN HL
        MOV     A,M
;       BYTE IS IN THE ACCUMULATOR
        ORA     A       ;RESET CARRY DUMP    ASMSETUP:  ;SET UP FILE
;       OPEN THE FILE FOR INPUT
        XRA     A       ;ZERO TO ACCUM
        STA     FCBCR   ;CLEAR CURRENT RECORD
;
        LXI     D,FCB
        MVI     C,OPENF
        CALL    BDOS
;       255 IN ACCUM IF OPEN ERROR
        RET
;
DISKR:  ;READ DISK FILE RECORD
        PUSH H! PUSH D! PUSH B
        LXI     D,FCB
        MVI     C,READF
        CALL    BDOS
        POP B! POP D! POP H
        RET
;
;       FIXED MESSAGE AREA
SIGNON: DB      'FILE DUMP VERSION 1.4$'
OPNMSG: DB      CR,
DUMP    ASM"
;       STACK AREA
        DS      64      ;RESERVE 32 LEVEL STACK
STKTOP:
;
        END

F>